home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / WINPROGS / WDASM17B.ZIP / HELLOHIL.ASM < prev    next >
Assembly Source File  |  1993-04-02  |  22KB  |  1,112 lines

  1.  
  2. ; HiLevel Syntax Generator Version 2.01
  3. ; Source file: c:\wdasm\hello1.asm
  4.  
  5.         TITLE    WDASM Example Program
  6.         .286
  7.         .MODEL    SMALL
  8.  
  9.         OPTION    NOM510
  10.         OPTION    CASEMAP:NONE
  11.         OPTION    PROLOGUE:hPrologue
  12.         OPTION    EPILOGUE:hEpilogue
  13.  
  14.         INCLUDE    HILEVEL.INC
  15.  
  16.         INCLUDE    HELLO2.INC
  17.  
  18.         EXTERN        DefWindowProc:FAR
  19.         EXTERN        GetMessage:FAR
  20.         EXTERN        TranslateMessage:FAR
  21.         EXTERN        FatalExit:FAR
  22.         EXTERN        DispatchMessage:FAR
  23.         EXTERN        GetVersion:FAR
  24.         EXTERN        GetDosEnvironment:FAR
  25.         EXTERN        LocalAlloc:FAR
  26.         EXTERN        LocalRealloc:FAR
  27.         EXTERN        LocalFree:FAR
  28.         EXTERN        FatalAppExit:FAR
  29.         EXTERN        LocalSize:FAR
  30.         EXTERN        UpdateWindow:FAR
  31.         EXTERN        GlobalRealloc:FAR
  32.         EXTERN        GlobalSize:FAR
  33.         EXTERN        InitApp:FAR
  34.         EXTERN        PostQuitMessage:FAR
  35.         EXTERN        LockSegment:FAR
  36.         EXTERN        UnlockSegment:FAR
  37.         EXTERN        WaitEvent:FAR
  38.         EXTERN        GetClientRect:FAR
  39.         EXTERN        GetModuleFileName:FAR
  40.         EXTERN        BeginPaint:FAR
  41.         EXTERN        EndPaint:FAR
  42.         EXTERN        CreateWindow:FAR
  43.         EXTERN        ShowWindow:FAR
  44.         EXTERN        LoadCursor:FAR
  45.         EXTERN        LoadIcon:FAR
  46.         EXTERN        RegisterClass:FAR
  47.         EXTERN        InitTask:FAR
  48.         EXTERN        GetStockObject:FAR
  49.         EXTERN        DrawText:FAR
  50.         EXTERN        Dos3Call:FAR
  51.         EXTERN        __winflags:FAR
  52.  
  53.  
  54.         .CODE
  55.  
  56. Proc0000Seg1    PROC    NEAR C
  57.         ADD    BYTE PTR [BX+SI], AL
  58.         ADD    BYTE PTR [BX+SI], AL
  59.         ADD    BYTE PTR [BX+SI], AL
  60.         ADD    BYTE PTR [BX+SI], AL
  61.         ADD    BYTE PTR [BX+SI], AL
  62.         ADD    BYTE PTR [BX+SI], AL
  63.         ADD    BYTE PTR [BX+SI], AL
  64.         ADD    BYTE PTR [BX+SI], AL
  65. Proc0000Seg1    ENDP
  66.  
  67.  
  68. Proc0010Seg1    PROC    NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, CHECKSTACK>, par12:WORD, par10:WORD, par8:WORD, par6:WORD, par4:WORD
  69.         LOCAL    local2:WORD, local4:WORD, local6:WORD,    \
  70.             local8:WORD, local10:WORD, local12:WORD, local14:WORD,    \
  71.             local16:WORD, local18:WORD, local20:WORD, local22:WORD,    \
  72.             local24:WORD, local26:WORD, local28:WORD, local30:WORD,    \
  73.             local32:WORD, local34:WORD, local36:WORD, local38:WORD,    \
  74.             local40:WORD, local42:WORD, local44:WORD, local46:WORD
  75.         .IF    (WORD PTR par10 == 0)
  76. L0022H:            MOV    WORD PTR local46, 0003H
  77.             MOV    WORD PTR local44, LROFFSET WNDPROC
  78.             MOV    WORD PTR local42, SEG WNDPROC
  79.             MOV    WORD PTR local40, 0000H
  80.             MOV    WORD PTR local38, 0000H
  81.             MOV    AX, WORD PTR par12
  82.             MOV    WORD PTR local36, AX
  83.             hCall    <FAR PTR LoadIcon, 0, 0, 7F00H>
  84.             MOV    WORD PTR local34, AX
  85.             hCall    <FAR PTR LoadCursor, 0, 0, 7F00H>
  86.             MOV    WORD PTR local32, AX
  87.             hCall    <FAR PTR GetStockObject, 0>
  88.             MOV    WORD PTR local30, AX
  89.             MOV    WORD PTR local28, 0000H
  90.             MOV    WORD PTR local26, 0000H
  91.             MOV    AX, 0010H
  92.             MOV    DX, DS
  93.             MOV    WORD PTR local24, AX
  94.             MOV    WORD PTR local22, DX
  95.             LEA    AX, WORD PTR local46
  96.             MOV    DX, SS
  97.             hCall    <FAR PTR RegisterClass, DX, AX>
  98.         .ENDIF
  99. L008AH:        MOV    AX, 0010H
  100.         MOV    DX, DS
  101.         PUSH    DX
  102.         PUSH    AX
  103.         MOV    AX, 00C2H
  104.         MOV    DX, DS
  105.         hCall    <FAR PTR CreateWindow, DX, AX, 00CFH, 0, 8000H, 8000H, 8000H, 8000H, 0, 0, WORD PTR par12, 0, 0>
  106.         MOV    WORD PTR local2, AX
  107.         hCall    <FAR PTR ShowWindow, AX, WORD PTR par4>
  108.         hCall    <FAR PTR UpdateWindow, WORD PTR local2>
  109. L00CDH:        LEA    AX, WORD PTR local20
  110.         MOV    DX, SS
  111.         hCall    <FAR PTR GetMessage, DX, AX, 0, 0, 0>
  112.         .IF    (AX)
  113.             LEA    AX, WORD PTR local20
  114.             MOV    DX, SS
  115.             hCall    <FAR PTR TranslateMessage, DX, AX>
  116.             LEA    AX, WORD PTR local20
  117.             MOV    DX, SS
  118.             hCall    <FAR PTR DispatchMessage, DX, AX>
  119.             JMP    SHORT L00CDH
  120.             NOP
  121.         .ENDIF
  122. L00FEH:        MOV    AX, WORD PTR local16
  123.         RET
  124. Proc0010Seg1    ENDP
  125.  
  126.  
  127. Proc0105Seg1    PROC    NEAR C
  128.         NOP
  129. Proc0105Seg1    ENDP
  130.  
  131.  
  132. WNDPROC    PROC    FAR PASCAL PUBLIC <LOADDS, INCBP, FORCEFRAME, CHECKSTACK>, par14:WORD, par12:WORD, par10:WORD, par8:WORD, par6:WORD
  133.         LOCAL    local2:WORD, local4:WORD, local6:WORD,    \
  134.             local8:WORD, local10:WORD, local12:WORD, local14:WORD,    \
  135.             local16:WORD, local18:WORD, local20:WORD, local22:WORD,    \
  136.             local24:WORD, local26:WORD, local28:WORD, local30:WORD,    \
  137.             local32:WORD, local34:WORD, local36:WORD, local38:WORD,    \
  138.             local40:WORD, local42:WORD, local44:WORD
  139.         PUSH    SI
  140.         PUSH    DI
  141.         MOV    SI, WORD PTR par14
  142.         MOV    AX, WORD PTR par12
  143.         JMP    NEAR PTR L017AH
  144.         NOP
  145. L0122H:        PUSH    SI
  146.         LEA    AX, WORD PTR local36
  147.         MOV    DX, SS
  148.         hCall    <FAR PTR BeginPaint, DX, AX>
  149.         MOV    DI, AX
  150.         PUSH    SI
  151.         LEA    AX, WORD PTR local44
  152.         MOV    DX, SS
  153.         hCall    <FAR PTR GetClientRect, DX, AX>
  154.         PUSH    DI
  155.         MOV    AX, 00DFH
  156.         MOV    DX, DS
  157.         PUSH    DX
  158.         PUSH    AX
  159.         PUSH    -1
  160.         LEA    AX, WORD PTR local44
  161.         MOV    DX, SS
  162.         hCall    <FAR PTR DrawText, DX, AX, 37>
  163.         PUSH    SI
  164.         LEA    AX, WORD PTR local36
  165.         MOV    DX, SS
  166.         hCall    <FAR PTR EndPaint, DX, AX>
  167.         XOR    AX, AX
  168.         XOR    DX, DX
  169.         JMP    SHORT L019FH
  170.         NOP
  171. L016AH:        hCall    <FAR PTR PostQuitMessage, 0>
  172.         XOR    AX, AX
  173.         XOR    DX, DX
  174.         JMP    SHORT L019FH
  175.         NOP
  176.         JMP    SHORT L0187H
  177. L017AH:        CMP    AX, 0002H
  178.         JZ    L016AH
  179.         .IF    (AX == 000FH)
  180.             JMP    NEAR PTR L0122H
  181.         .ENDIF
  182. L0187H:        hCall    <FAR PTR DefWindowProc, SI, WORD PTR par12, WORD PTR par10, WORD PTR par8, WORD PTR par6>
  183.         JMP    SHORT L019FH
  184.         NOP
  185.         MOV    WORD PTR par14, SI
  186. L019FH:        POP    DI
  187.         POP    SI
  188.         RET
  189. WNDPROC    ENDP
  190.  
  191.  
  192. L01ACH        DW    LROFFSET __winflags
  193. Proc01ACSeg1    PROC    NEAR C
  194. L01AEH:        MOV    AL, -1
  195.         hCall    <NEAR PTR Proc034ESeg1, AX>
  196. L01B4H::    XOR    BP, BP
  197.         hCall    <FAR PTR InitTask, BP>
  198.         OR    AX, AX
  199.         JZ    L01AEH
  200.         MOV    WORD PTR D0064H, ES
  201.         ADD    CX, 0100H
  202.         JB    L01AEH
  203.         MOV    WORD PTR D002EH, CX
  204.         MOV    WORD PTR D0030H, SI
  205.         MOV    WORD PTR D0032H, DI
  206.         MOV    WORD PTR D0034H, BX
  207.         MOV    WORD PTR D0036H, ES
  208.         MOV    WORD PTR D0038H, DX
  209.         CALL    FAR PTR GetVersion
  210.         MOV    WORD PTR D0066H, AX
  211.         MOV    AH, 48
  212.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  213.             CALL    FAR PTR Dos3Call
  214.             JMP    SHORT L01FEH
  215.         .ENDIF
  216. L01FCH:        INT    0021H
  217. L01FEH:        MOV    WORD PTR D0068H, AX
  218.         .IF    ( !(WORD PTR CS:L01ACH & 0001H))
  219.             MOV    AL, 0
  220.             MOV    BYTE PTR D006BH, AL
  221.         .ENDIF
  222. L020FH:        XOR    AX, AX
  223.         hCall    <FAR PTR WaitEvent, AX>
  224.         hCall    <FAR PTR InitApp, WORD PTR D0032H>
  225.         OR    AX, AX
  226.         JZ    L01AEH
  227.         CALL    NEAR PTR Proc0268Seg1
  228.         CALL    NEAR PTR Proc047ESeg1
  229.         CALL    NEAR PTR Proc05FCSeg1
  230.         CALL    NEAR PTR Proc085CSeg1
  231.         hCall    <NEAR PTR Proc024CSeg1, WORD PTR D00A0H, WORD PTR D009EH, WORD PTR D009CH>
  232.         ADD    SP, 6
  233.         hCall    <NEAR PTR Proc0347Seg1, AX>
  234.         MOV    AX, 0015H
  235.         JMP    NEAR PTR L0683H
  236. Proc01ACSeg1    ENDP
  237.  
  238.  
  239. ;        Missing MOV SP,BP and POP BP in epilogue.
  240. Proc024CSeg1    PROC    NEAR C
  241.         PUSH    BP
  242.         MOV    BP, SP
  243.         hCall    <NEAR PTR Proc0010Seg1, WORD PTR D0032H, WORD PTR D0030H, WORD PTR D0036H, WORD PTR D0034H, WORD PTR D0038H>
  244.         POP    BP
  245.         RET
  246. Proc024CSeg1    ENDP
  247.  
  248.  
  249. Proc0268Seg1    PROC    NEAR C
  250.         MOV    AX, 3500H
  251.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  252.             CALL    FAR PTR Dos3Call
  253.             JMP    SHORT L027DH
  254.         .ENDIF
  255. L027BH:        INT    0021H
  256. L027DH:        MOV    WORD PTR D0050H, BX
  257.         MOV    WORD PTR D0052H, ES
  258.         PUSH    CS
  259.         POP    DS
  260.         MOV    AX, 2500H
  261.         MOV    DX, 067EH
  262.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  263.             CALL    FAR PTR Dos3Call
  264.             JMP    SHORT L029FH
  265.         .ENDIF
  266. L029DH:        INT    0021H
  267. L029FH:        PUSH    SS
  268.         POP    DS
  269.         MOV    CX, WORD PTR D00B8H
  270.         JCXZ    L02D0H
  271.         MOV    ES, WORD PTR D0064H
  272.         MOV    SI, WORD PTR ES:D002CH
  273.         MOV    AX, WORD PTR D00BAH
  274.         MOV    DX, WORD PTR D00BCH
  275.         XOR    BX, BX
  276.         CALL    DWORD PTR D00B6H
  277.         JAE    L02C2H
  278.         JMP    NEAR PTR L0424H
  279. L02C2H:        MOV    AX, WORD PTR D00BEH
  280.         MOV    DX, WORD PTR D00C0H
  281.         MOV    BX, 0003H
  282.         CALL    DWORD PTR D00B6H
  283. L02D0H:        MOV    ES, WORD PTR D0064H
  284.         MOV    CX, WORD PTR ES:D002CH
  285.         JCXZ    L0319H
  286.         MOV    ES, CX
  287.         XOR    DI, DI
  288. L02DFH:        .IF    (BYTE PTR ES:[DI] != 0)
  289.             MOV    CX, 000DH
  290.             MOV    SI, 0042H
  291.             REPE CMPSB
  292.             JZ    L02FAH
  293.             MOV    CX, 7FFFH
  294.             XOR    AX, AX
  295.             REPNE SCASB
  296.             JNZ    L0319H
  297.             JMP    SHORT L02DFH
  298. L02FAH:            PUSH    ES
  299.             PUSH    DS
  300.             POP    ES
  301.             POP    DS
  302.             MOV    SI, DI
  303.             MOV    DI, 0074H
  304.             MOV    CL, 4
  305. L0305H:            LODSB
  306.             SUB    AL, 65
  307.             JB    L0317H
  308.             SHL    AL, CL
  309.             XCHG    DX, AX
  310.             LODSB
  311.             SUB    AL, 65
  312.             JB    L0317H
  313.             OR    AL, DL
  314.             STOSB
  315.             JMP    SHORT L0305H
  316. L0317H:            PUSH    SS
  317.             POP    DS
  318.         .ENDIF
  319. L0319H:        MOV    SI, 00C2H
  320.         MOV    DI, 00C2H
  321.         CALL    NEAR PTR Proc03EBSeg1
  322.         MOV    SI, 00C2H
  323.         MOV    DI, 00C2H
  324.         CALL    NEAR PTR Proc03FASeg1
  325.         MOV    SI, 00C2H
  326.         MOV    DI, 00C2H
  327.         CALL    NEAR PTR Proc03EBSeg1
  328.         MOV    SI, 00C2H
  329.         MOV    DI, 00C2H
  330.         CALL    NEAR PTR Proc03EBSeg1
  331.         MOV    SI, 00C2H
  332.         MOV    DI, 00C2H
  333.         CALL    NEAR PTR Proc03FASeg1
  334.         RET
  335. Proc0268Seg1    ENDP
  336.  
  337.  
  338. ;        Missing MOV SP,BP and POP BP in epilogue.
  339. Proc0347S